Тестирование на уровне элементов (Component-level) - следующий уровень тестирования модуля. Компонент может иметь довольно простые функциональные возможности, но только комплекс признаков гарантирует от фактического разделения в отдельные меньшие модули. Например, логический процесс мог бы быть определен так. Вычисляется ежемесячное жалованье для одного. Этот процесс может состоять из следующих операций:
1. Извлечение из базы данных число часов отработанных в месяце. 2. Вычисления количества оплаты. 3. Необязательное добавление премии. 4. Производство всех стандартных вычетов из этой суммы.
Каждая операция будет возможно иметь различные требования. Например, извлечение из базы данных будет нуждаться в обработке ошибок (запись пользователя не найдена, базы данных не доступна и так далее). При вычислениях нужно предотвратить числовые ошибки (например деление на ноль), если используются удаленные компоненты они будут вызывать другие ошибки. Следовательно, весь компонент (например CalcMonthlySalary) будет состоять из четырех меньших модулей (GetHoursForEmployee, CalcGrossPay, GetBonusAmount и CalcDeductions), но CalcMonthlySalary будет все еще достаточно мал чтобы квалифицировать его как модуль (для тестирования). Чтобы проверить определенный модуль должен быть разработан ряд сценариев, это необходимо для гарантии, что каждая строка программы будет выполнена (не обязательно в одном тесте). Например, если функция включает If..Then..Else по крайней мере два сценария теста должны быть созданы. Это необходимо для того, что бы пройти по каждому пути выполнения. Если это функция которая тестируется, определение ожидаемого результата теста проще потому, что возвращаемое значение функции может быть проверено на правильность. Однако если Вы проверяете подпрограмму, Вы можете проверять только эффекты вызова подпрограммы в связи с отсуствием возвращаемого значения. Я вообще имею тенденцию к записи подпрограмм как функций, естественно где это возможно.
В маленькой разработки, разработчик сам мог бы выполнить этот уровень тестирования. В большой системе начальный тест все еще может быть выполнен разработчиком, но более формальная версия теста будет наиболее вероятно проводиться другим специалистом.